home *** CD-ROM | disk | FTP | other *** search
/ NeXTSTEP 3.1 (Developer) [x86] / NeXT Step 3.1 Intel dev.cdr.dmg / NextDeveloper / Headers / bsd / dev / i386 / kd.h < prev    next >
Encoding:
C/C++ Source or Header  |  1993-04-30  |  16.6 KB  |  572 lines

  1. /* 
  2.  * Mach Operating System
  3.  * Copyright (c) 1989 Carnegie-Mellon University
  4.  * All rights reserved.  The CMU software License Agreement specifies
  5.  * the terms and conditions for use and redistribution.
  6.  */
  7. /* 
  8.  * HISTORY
  9.  * $Log:    kd.h,v $
  10.  * Revision 1.5.1.5  90/11/27  13:44:00  rvb
  11.  *     Synched 2.5 & 3.0 at I386q (r1.5.1.5) & XMK35 (r2.4)
  12.  *     [90/11/15            rvb]
  13.  * 
  14.  * Revision 1.5.1.4  90/06/07  08:05:44  rvb
  15.  *     Move CURRENT_COLUMN here.
  16.  *     [90/06/06            rvb]
  17.  * 
  18.  * Revision 2.3  90/08/09  16:32:09  rpd
  19.  *     Added kdb/X support from rvb.
  20.  *     [90/08/09            rpd]
  21.  * 
  22.  * Revision 1.5.1.3  90/05/14  13:21:26  rvb
  23.  *     Support for entering kdb from X;
  24.  *     [90/04/30            rvb]
  25.  * 
  26.  * Revision 2.2  90/05/03  15:44:47  dbg
  27.  *     First checkin.
  28.  * 
  29.  * Revision 1.5.1.2  90/02/28  15:50:17  rvb
  30.  *     Fix numerous typo's in Olivetti disclaimer.
  31.  *     [90/02/28            rvb]
  32.  * 
  33.  * Revision 1.5.1.1  90/01/08  13:30:59  rvb
  34.  *     Add Olivetti copyright.
  35.  *     [90/01/08            rvb]
  36.  * 
  37.  * Revision 1.5  89/07/17  10:41:10  rvb
  38.  *     Olivetti Changes to X79 upto 5/9/89:
  39.  *     [89/07/11            rvb]
  40.  * 
  41.  * Revision 1.6  89/07/07  16:24:24  kupfer
  42.  * X79 merge, 2nd attempt
  43.  * 
  44.  * Revision 1.4.1.1  89/04/27  12:20:58  kupfer
  45.  * Merge X79 with our latest and greatest.
  46.  * 
  47.  * Revision 1.1.1.1  89/04/27  11:53:41  kupfer
  48.  * X79 from CMU.
  49.  * 
  50.  * Revision 1.4  89/03/09  20:06:33  rpd
  51.  *     More cleanup.
  52.  * 
  53.  * Revision 1.3  89/02/26  12:37:13  gm0w
  54.  *     Changes for cleanup.
  55.  * 
  56.  */
  57.  
  58. /* **********************************************************************
  59.  File:         kd.h
  60.  Description:  definitions for AT keyboard/display driver
  61.  Authors:       Eugene Kuerner, Adrienne Jardetzky, Mike Kupfer
  62.  
  63.  $ Header: $
  64.  
  65.  Copyright Ing. C. Olivetti & C. S.p.A. 1988, 1989.
  66.  All rights reserved.
  67. ********************************************************************** */
  68. /*
  69.   Copyright 1988, 1989 by Olivetti Advanced Technology Center, Inc.,
  70. Cupertino, California.
  71.  
  72.         All Rights Reserved
  73.  
  74.   Permission to use, copy, modify, and distribute this software and
  75. its documentation for any purpose and without fee is hereby
  76. granted, provided that the above copyright notice appears in all
  77. copies and that both the copyright notice and this permission notice
  78. appear in supporting documentation, and that the name of Olivetti
  79. not be used in advertising or publicity pertaining to distribution
  80. of the software without specific, written prior permission.
  81.  
  82.   OLIVETTI DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE
  83. INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS,
  84. IN NO EVENT SHALL OLIVETTI BE LIABLE FOR ANY SPECIAL, INDIRECT, OR
  85. CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
  86. LOSS OF USE, DATA OR PROFITS, WHETHER IN ACTION OF CONTRACT,
  87. NEGLIGENCE, OR OTHER TORTIOUS ACTION, ARISING OUR OF OR IN CONNECTION
  88. WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
  89. */
  90.  
  91. /*
  92.  * This file contains defines and structures that implement hardware
  93.  * keyboard mapping into ansi defined output codes.  Note that this
  94.  * is structured so that "re-mapping" of actual keys is allowed at
  95.  * anytime during execution of the console driver.  And each scan code
  96.  * is potentially expanded into NUMKEYS characters.  Which is programmable
  97.  * at runtime or whenever.
  98.  *
  99.  * 02 Nov 1988        orc!eugene
  100.  *
  101.  */
  102.  
  103. #ifndef    _KD_H_
  104. #define _KD_H_
  105.  
  106. #include <mach/boolean.h>
  107. #include <sys/types.h>
  108. #include <sys/time.h>
  109.  
  110.  
  111. /*
  112.  * Where memory for various graphics adapters starts.
  113.  */
  114. #define EGA_START    0x0b8000
  115. #define CGA_START    0x0b8000
  116. #define MONO_START    0x0b0000
  117.  
  118. /*
  119.  * Common I/O ports.
  120.  */
  121. #define K_TMR0        0x40        /* timer 0, 1, or 2 value (r/w) */
  122. #define K_TMR1        0x41
  123. #define K_TMR2        0x42
  124. #define K_TMRCTL    0x43        /* timer control (write-only) */
  125. #define K_RDWR         0x60        /* keyboard data & cmds (read/write) */
  126. #define K_PORTB        0x61        /* r/w. speaker & status lines */
  127. #define K_STATUS     0x64        /* keybd status (read-only) */
  128. #define K_CMD         0x64        /* keybd ctlr command (write-only) */
  129.  
  130. /*
  131.  * I/O ports for various graphics adapters.
  132.  */
  133. #define EGA_IDX_REG    0x3d4
  134. #define EGA_IO_REG    0x3d5
  135. #define CGA_IDX_REG    0x3d4
  136. #define CGA_IO_REG    0x3d5
  137. #define MONO_IDX_REG    0x3b4
  138. #define MONO_IO_REG    0x3b5
  139.  
  140. /*
  141.  * Commands sent to graphics adapter.
  142.  */
  143. #define C_LOW         0x0f        /* return low byte of cursor addr */
  144. #define C_HIGH         0x0e        /* high byte */
  145.  
  146. /*
  147.  * Bit definitions for K_STATUS port.
  148.  */
  149. #define K_OBUF_FUL     0x01        /* output (from keybd) buffer full */
  150. #define K_IBUF_FUL     0x02        /* input (to keybd) buffer full */
  151. #define K_SYSFLAG    0x04        /* "System Flag" */
  152. #define K_CMD_DATA    0x08        /* 1 = input buf has cmd, 0 = data */
  153. #define K_KBD_INHBT    0x10        /* 0 if keyboard inhibited */
  154. #define M_OBUF_FUL    0x20        /* mouse data available */
  155.  
  156. /* 
  157.  * Keyboard controller commands (sent to K_CMD port).
  158.  */
  159. #define KC_CMD_READ    0x20        /* read controller command byte */
  160. #define KC_CMD_WRITE    0x60        /* write controller command byte */
  161. #define KC_CMD_TEST    0xab        /* test interface */
  162. #define KC_CMD_DUMP    0xac        /* diagnostic dump */
  163. #define KC_CMD_DISBLE    0xad        /* disable keyboard */
  164. #define KC_CMD_ENBLE    0xae        /* enable keyboard */
  165. #define KC_CMD_RDKBD    0xc4        /* read keyboard ID */
  166. #define KC_CMD_MOUSE    0xd4        /* send next data to mouse */
  167. #define KC_CMD_ECHO    0xee        /* used for diagnostic testing */
  168.  
  169. /* 
  170.  * Keyboard/mouse commands (send to K_RDWR).
  171.  */
  172. #define K_CMD_LEDS    0xed        /* set status LEDs (caps lock, etc.) */
  173. #define M_CMD_SETRES    0xe8        /* set mouse resolution to 2**N/mm */
  174. #define M_CMD_POLL    0xf4        /* enable mouse polling */
  175.  
  176. /* 
  177.  * Bit definitions for controller command byte (sent following 
  178.  * K_CMD_WRITE command).
  179.  */
  180. #define K_CB_ENBLIRQ    0x01        /* enable data-ready intrpt */
  181. #define M_CB_ENBLIRQ    0x02        /* enable data-ready intrpt */
  182. #define K_CB_SETSYSF    0x04        /* Set System Flag */
  183. #define K_CB_INHBOVR    0x08        /* Inhibit Override */
  184. #define K_CB_DISBLE    0x10        /* disable keyboard*/
  185. #define M_CB_DISBLE    0x20        /* disable mouse */
  186.  
  187. /* 
  188.  * Bit definitions for "Indicator Status Byte" (sent after a 
  189.  * K_CMD_LEDS command).  If the bit is on, the LED is on.  Undefined 
  190.  * bit positions must be 0.
  191.  */
  192. #define K_LED_SCRLLK    0x1        /* scroll lock */
  193. #define K_LED_NUMLK    0x2        /* num lock */
  194. #define K_LED_CAPSLK    0x4        /* caps lock */
  195.  
  196. /* 
  197.  * Bit definitions for "Miscellaneous port B" (K_PORTB).
  198.  */
  199. /* read/write */
  200. #define K_ENABLETMR2    0x01        /* enable output from timer 2 */
  201. #define K_SPKRDATA    0x02        /* direct input to speaker */
  202. #define K_ENABLEPRTB    0x04        /* "enable" port B */
  203. #define K_EIOPRTB    0x08        /* enable NMI on parity error */
  204. /* read-only */
  205. #define K_REFRESHB    0x10        /* refresh flag from INLTCONT PAL */
  206. #define K_OUT2B        0x20        /* timer 2 output */
  207. #define K_ICKB        0x40        /* I/O channel check (parity error) */
  208.  
  209. /* 
  210.  * Bit definitions for timer control port (K_TMRCTL).
  211.  */
  212. /* select timer 0, 1, or 2. Don't mess with 0 or 1. */
  213. #define K_SELTMRMASK    0xc0
  214. #define K_SELTMR0    0x00
  215. #define K_SELTMR1    0x40
  216. #define K_SELTMR2    0x80
  217.  
  218. /* read/load control */
  219. #define K_RDLDTMRMASK    0x30
  220. #define K_HOLDTMR    0x00        /* freeze timer until read */
  221. #define K_RDLDTLSB    0x10        /* read/load LSB */
  222. #define K_RDLDTMSB    0x20        /* read/load MSB */
  223. #define K_RDLDTWORD    0x30        /* read/load LSB then MSB */
  224.  
  225. /* mode control */
  226. #define K_TMDCTLMASK    0x0e
  227. #define K_TCOUNTINTR    0x00        /* "Term Count Intr" */
  228. #define K_TONESHOT    0x02        /* "Progr One-Shot" */
  229. #define K_TRATEGEN    0x04        /* "Rate Gen (/n)" */
  230. #define K_TSQRWAVE    0x06        /* "Sqr Wave Gen" */
  231. #define K_TSOFTSTRB    0x08        /* "Softw Trig Strob" */
  232. #define K_THARDSTRB    0x0a        /* "Hardw Trig Strob" */
  233.  
  234. /* count mode */
  235. #define K_TCNTMDMASK    0x01
  236. #define K_TBINARY    0x00        /* 16-bit binary counter */
  237. #define K_TBCD        0x01        /* 4-decade BCD counter */
  238.  
  239.  
  240.  
  241. /* 
  242.  * Fun definitions for displayed characters and characters read from 
  243.  * the keyboard.
  244.  */
  245.  
  246. /*
  247.  * Attributes for character sent to display.
  248.  */
  249. #define KA_NORMAL    0x07
  250. #define KA_REVERSE    0x70
  251.  
  252. /*
  253.  * For an EGA-like display, each character takes two bytes, one for the 
  254.  * actual character, followed by one for its attributes.  
  255.  * Be very careful if you change ONE_SPACE, as these constants are also used
  256.  * to define the device-independent display implemented by kd.c.  
  257.  * (See kdsoft.h for more details on the device-independent display.)
  258.  */
  259. #define ONE_SPACE    2        /* bytes in 1 char, EGA-like display */
  260. #define BOTTOM_LINE     3840        /* 1st byte in last line of display */
  261. #define ONE_PAGE     4000        /* number of bytes in page */
  262. #define ONE_LINE     160        /* number of bytes in line */
  263.  
  264. #define BEG_OF_LINE(pos)    ((pos) - (pos)%ONE_LINE)
  265. #define CURRENT_COLUMN(pos)    (((pos) % ONE_LINE) / ONE_SPACE)
  266.  
  267. #define NUMKEYS        89
  268. #define NUMSTATES    5        /* NORMAL_STATE, ... */
  269. #define NUMOUTPUT     3        /* max size of byte seq from key */
  270. #define WIDTH_KMAP    (NUMSTATES * NUMOUTPUT)
  271.  
  272. /*
  273.  * Keyboard states.  Used for KDGKBENT, KDSKBENT ioctl's.  If you
  274.  * change these values, you should also rearrange the entries in
  275.  * key_map.
  276.  */
  277. /* "state indices" (for computing key_map index) */
  278. #define NORM_STATE    0
  279. #define SHIFT_STATE    1
  280. #define CTRL_STATE    2
  281. #define ALT_STATE    3
  282. #define SHIFT_ALT    4
  283. /* macro to convert from state index to actual key_map index */
  284. #define CHARIDX(sidx)    ((sidx) * NUMOUTPUT)
  285.             /* where sidx is in [NORM_STATE ... SHIFT_ALT] */
  286.  
  287. /* "state bits" for kd_state vector */
  288. #define KS_NORMAL    0x00
  289. #define KS_SLKED    0x01
  290. #define KS_NLKED    0x02
  291. #define KS_CLKED    0x04
  292. #define KS_ALTED    0x08
  293. #define KS_SHIFTED    0x10
  294. #define KS_CTLED    0x20
  295.  
  296.  
  297. /*
  298.  * Scancode values, not to be confused with Ascii values.
  299.  */
  300. typedef u_char Scancode;
  301.  
  302. /* special codes */
  303. #define K_UP        0x80        /* OR'd in if key below is released */
  304. #define K_EXTEND    0xe0        /* marker for "extended" sequence */
  305. #define K_ACKSC        0xfa        /* ack for keyboard command */
  306. #define K_RESEND    0xfe        /* request to resend keybd cmd */
  307.  
  308. /* modifier keys  */
  309. #define K_CTLSC        0x1d        /* control down        */
  310. #define K_LSHSC        0x2a        /* left shift down    */
  311. #define K_RSHSC        0x36        /* right shift down    */
  312. #define K_ALTSC        0x38        /* alt key down        */
  313. #define K_CLCKSC    0x3a        /* caps lock         */
  314. #define K_NLCKSC    0x45        /* num lock down    */
  315.  
  316. /* "special keys" */
  317. #define K_BSSC        0x0e        /* backspace */
  318. #define K_TABSC        0x0f        /* tab */
  319. #define K_RETSC        0x1c        /* return */
  320. #define K_SPSC        0x39        /* space */
  321. #define K_ESCSC        0x01        /* ESC */
  322.  
  323. /* alphabetic keys */
  324. #define K_qSC        0x10
  325. #define K_wSC        0x11
  326. #define K_eSC        0x12
  327. #define K_rSC        0x13
  328. #define K_tSC        0x14
  329. #define K_ySC        0x15
  330. #define K_uSC        0x16
  331. #define K_iSC        0x17
  332. #define K_oSC        0x18
  333. #define K_pSC        0x19
  334.  
  335. #define K_aSC        0x1e
  336. #define K_sSC        0x1f
  337. #define K_dSC        0x20
  338. #define K_fSC        0x21
  339. #define K_gSC        0x22
  340. #define K_hSC        0x23
  341. #define K_jSC        0x24
  342. #define K_kSC        0x25
  343. #define K_lSC        0x26
  344.  
  345. #define K_zSC        0x2c
  346. #define K_xSC        0x2d
  347. #define K_cSC        0x2e
  348. #define K_vSC        0x2f
  349. #define K_bSC        0x30
  350. #define K_nSC        0x31
  351. #define K_mSC        0x32
  352.  
  353. /* numbers and punctuation */
  354. #define K_ONESC        0x02        /* 1    */
  355. #define K_TWOSC        0x03        /* 2    */
  356. #define K_THREESC    0x04        /* 3    */
  357. #define K_FOURSC    0x05        /* 4    */
  358. #define K_FIVESC    0x06        /* 5    */
  359. #define K_SIXSC        0x07        /* 6    */
  360. #define K_SEVENSC    0x08        /* 7    */
  361. #define K_EIGHTSC    0x09        /* 8    */
  362. #define K_NINESC    0x0a        /* 9    */
  363. #define K_ZEROSC    0x0b        /* 0    */
  364.  
  365. #define K_MINUSSC    0x0c        /* -    */
  366. #define K_EQLSC        0x0d        /* =    */
  367. #define K_LBRKTSC    0x1a        /* [    */
  368. #define K_RBRKTSC    0x1b        /* ]    */
  369. #define K_SEMISC    0x27        /* ;    */
  370. #define K_SQUOTESC    0x28        /* '    */
  371. #define K_GRAVSC    0x29        /* `    */
  372. #define K_BSLSHSC    0x2b        /* \    */
  373. #define K_COMMASC    0x33        /* ,    */
  374. #define K_PERIODSC    0x34        /* .    */
  375. #define K_SLASHSC    0x35        /* /    */
  376.  
  377. /* keypad keys */
  378. #define K_HOMESC    0x47        /* scancode for home     */
  379. #define K_DELSC        0x53        /* scancode for del    */
  380.  
  381. /*
  382.  * Ascii values and flag characters for key map.
  383.  * A function key is represented by the 3-byte char sequence that it
  384.  * corresponds to.
  385.  * Other mappable non-Ascii keys (e.g., "ctrl") are represented by a
  386.  * two-byte sequence: K_SCAN, followed by the key's scan code.
  387.  */
  388. #define K_DONE        0xff        /* must be same as NC */
  389. #define NC        0xff        /* No character defined    */
  390.  
  391. #define K_SCAN        0xfe        /* followed by scan code */
  392.  
  393. /* ascii char set */
  394. #define K_NUL        0x00        /* Null character    */
  395. #define K_SOH        0x01
  396. #define K_STX        0x02
  397. #define K_ETX        0x03
  398. #define K_EOT        0x04
  399. #define K_ENQ        0x05
  400. #define K_ACK        0x06
  401. #define K_BEL        0x07        /* bell character    */
  402. #define K_BS        0x08        /* back space        */
  403. #define K_HT        0x09
  404. #define K_LF        0x0a        /* line feed        */
  405. #define K_VT        0x0b
  406. #define K_FF        0x0c
  407. #define K_CR        0x0d        /* carriage return    */
  408. #define K_SO        0x0e
  409. #define K_SI        0x0f
  410. #define K_DLE        0x10
  411. #define K_DC1        0x11
  412. #define K_DC2        0x12
  413. #define K_DC3        0x13
  414. #define K_DC4        0x14
  415. #define K_NAK        0x15
  416. #define K_SYN        0x16
  417. #define K_ETB        0x17
  418. #define K_CAN        0x18
  419. #define K_EM        0x19
  420. #define K_SUB        0x1a
  421. #define K_ESC        0x1b        /* escape character    */
  422. #define K_FS        0x1c
  423. #define K_GS        0x1d
  424. #define K_RS        0x1e
  425. #define K_US        0x1f
  426. #define K_SPACE        0x20        /* space character    */
  427. #define K_BANG        0x21        /* !            */
  428. #define K_DQUOTE    0x22        /* "            */
  429. #define K_POUND        0x23        /* #            */ 
  430. #define K_DOLLAR    0x24        /* $            */ 
  431. #define K_PERC        0x25        /* %            */ 
  432. #define K_AMPER        0x26        /* &            */ 
  433. #define K_SQUOTE    0x27        /* '            */ 
  434. #define K_LPAREN    0x28        /* (            */ 
  435. #define K_RPAREN    0x29        /* )            */ 
  436. #define K_ASTER        0x2a        /* *            */ 
  437. #define K_PLUS        0x2b        /* +            */ 
  438. #define K_COMMA        0x2c        /* ,            */ 
  439. #define K_MINUS        0x2d        /* -            */ 
  440. #define K_PERIOD    0x2e        /* .            */ 
  441. #define K_SLASH        0x2f        /* /            */ 
  442. #define K_ZERO        0x30        /* 0            */ 
  443. #define K_ONE        0x31        /* 1            */
  444. #define K_TWO        0x32        /* 2            */
  445. #define K_THREE        0x33        /* 3            */
  446. #define K_FOUR        0x34        /* 4            */
  447. #define K_FIVE        0x35        /* 5            */
  448. #define K_SIX        0x36        /* 6            */
  449. #define K_SEVEN        0x37        /* 7            */
  450. #define K_EIGHT        0x38        /* 8            */
  451. #define K_NINE        0x39        /* 9            */
  452. #define K_COLON        0x3a        /* :            */
  453. #define K_SEMI        0x3b        /* ;            */
  454. #define K_LTHN        0x3c        /* <            */
  455. #define K_EQL        0x3d        /* =            */
  456. #define K_GTHN        0x3e        /* >            */
  457. #define K_QUES        0x3f        /* ?            */
  458. #define K_ATSN        0x40        /* @            */
  459. #define K_A        0x41        /* A            */
  460. #define K_B        0x42        /* B            */
  461. #define K_C        0x43        /* C            */
  462. #define K_D        0x44        /* D            */
  463. #define K_E        0x45        /* E            */
  464. #define K_F        0x46        /* F            */
  465. #define K_G        0x47        /* G            */
  466. #define K_H        0x48        /* H            */
  467. #define K_I        0x49        /* I            */
  468. #define K_J        0x4a        /* J            */
  469. #define K_K        0x4b        /* K            */
  470. #define K_L        0x4c        /* L            */
  471. #define K_M        0x4d        /* M            */
  472. #define K_N        0x4e        /* N            */
  473. #define K_O        0x4f        /* O            */
  474. #define K_P        0x50        /* P            */
  475. #define K_Q        0x51        /* Q            */
  476. #define K_R        0x52        /* R            */
  477. #define K_S        0x53        /* S            */
  478. #define K_T        0x54        /* T            */
  479. #define K_U        0x55        /* U            */
  480. #define K_V        0x56        /* V            */
  481. #define K_W        0x57        /* W            */
  482. #define K_X        0x58        /* X            */
  483. #define K_Y        0x59        /* Y            */
  484. #define K_Z        0x5a        /* Z            */
  485. #define K_LBRKT        0x5b        /* [            */
  486. #define K_BSLSH        0x5c        /* \            */
  487. #define K_RBRKT        0x5d        /* ]            */
  488. #define K_CARET        0x5e        /* ^            */
  489. #define K_UNDSC        0x5f        /* _            */
  490. #define K_GRAV        0x60        /* `            */
  491. #define K_a        0x61        /* a            */
  492. #define K_b        0x62        /* b            */
  493. #define K_c        0x63        /* c            */
  494. #define K_d        0x64        /* d            */
  495. #define K_e        0x65        /* e            */
  496. #define K_f        0x66        /* f            */
  497. #define K_g        0x67        /* g            */
  498. #define K_h        0x68        /* h            */
  499. #define K_i        0x69        /* i            */
  500. #define K_j        0x6a        /* j            */
  501. #define K_k        0x6b        /* k            */
  502. #define K_l        0x6c        /* l            */
  503. #define K_m        0x6d        /* m            */
  504. #define K_n        0x6e        /* n            */
  505. #define K_o        0x6f        /* o            */
  506. #define K_p        0x70        /* p            */
  507. #define K_q        0x71        /* q            */
  508. #define K_r        0x72        /* r            */
  509. #define K_s        0x73        /* s            */
  510. #define K_t        0x74        /* t            */
  511. #define K_u        0x75        /* u            */
  512. #define K_v        0x76        /* v            */
  513. #define K_w        0x77        /* w            */
  514. #define K_x        0x78        /* x            */
  515. #define K_y        0x79        /* y            */
  516. #define K_z        0x7a        /* z            */
  517. #define K_LBRACE    0x7b        /* {            */
  518. #define K_PIPE        0x7c        /* |            */
  519. #define K_RBRACE    0x7d        /* }            */
  520. #define K_TILDE        0x7e        /* ~            */
  521. #define K_DEL        0x7f        /* delete        */
  522.  
  523. /* Ascii sequences to be generated by the named key */
  524. #define K_F1        0x1b,0x4f,0x50
  525. #define K_F1S        0x1b,0x4f,0x70
  526. #define K_F2        0x1b,0x4f,0x51
  527. #define K_F2S        0x1b,0x4f,0x71
  528. #define K_F3        0x1b,0x4f,0x52
  529. #define K_F3S        0x1b,0x4f,0x72
  530. #define K_F4        0x1b,0x4f,0x53
  531. #define K_F4S        0x1b,0x4f,0x73
  532. #define K_F5        0x1b,0x4f,0x54
  533. #define K_F5S        0x1b,0x4f,0x74
  534. #define K_F6        0x1b,0x4f,0x55
  535. #define K_F6S        0x1b,0x4f,0x75
  536. #define K_F7        0x1b,0x4f,0x56
  537. #define K_F7S        0x1b,0x4f,0x76
  538. #define K_F8        0x1b,0x4f,0x57
  539. #define K_F8S        0x1b,0x4f,0x77
  540. #define K_F9        0x1b,0x4f,0x58
  541. #define K_F9S        0x1b,0x4f,0x78
  542. #define K_F10        0x1b,0x4f,0x59
  543. #define K_F10S        0x1b,0x4f,0x79
  544. #define K_F11        0x1b,0x4f,0x5a
  545. #define K_F11S        0x1b,0x4f,0x7a
  546. #define K_F12        0x1b,0x4f,0x41
  547. #define K_F12S        0x1b,0x4f,0x61
  548.  
  549. #define K_SCRL        0x1b,0x5b,0x4d
  550. #define K_HOME        0x1b,0x5b,0x48
  551. #define K_UA        0x1b,0x5b,0x41
  552. #define K_PUP        0x1b,0x5b,0x56
  553. #define K_LA        0x1b,0x5b,0x44
  554. #define K_RA        0x1b,0x5b,0x43
  555. #define K_END        0x1b,0x5b,0x59
  556. #define K_DA        0x1b,0x5b,0x42
  557. #define K_PDN        0x1b,0x5b,0x55
  558. #define K_INS        0x1b,0x5b,0x40
  559.  
  560. /*
  561.  * These routines are declared here so that all the modules making
  562.  * up the kd driver agree on how to do locking.
  563.  */
  564.  
  565. #ifdef    KERNEL
  566. extern void splx();
  567. extern int spltty();
  568. #endif /* KERNEL */
  569.  
  570. #endif    /* _KD_H_ */
  571.  
  572.